package xju.rjxy.shop.service;

import xju.rjxy.shop.model.domain.Friend;
import xju.rjxy.shop.model.vo.FriendVO;

import java.util.List;

/**
 * 好友服务接口
 */
public interface IFriendService {
    /**
     * 获取好友列表
     */
    List<FriendVO> getFriendList();
    
    /**
     * 根据用户ID获取好友列表
     */
    List<FriendVO> getFriendListByUserId(Integer userId);
    
    /**
     * 根据分组获取好友列表
     */
    List<FriendVO> getFriendListByTag(Integer userId, String tag);
    
    /**
     * 删除好友
     */
    boolean deleteFriend(Integer userId, Integer friendId);
    
    /**
     * 添加好友（userId为发起人，friendId为被加好友，tag为分组，friendId由后端通过用户名或手机号查找）
     */
    boolean addFriend(Friend friend);
    
    /**
     * 更新好友分组
     */
    boolean updateFriendTag(Integer userId, Integer friendId, String tag);
    
    /**
     * 获取单个好友详情
     */
    FriendVO getFriendInfo(Integer userId, Integer friendId);

    boolean acceptFriend(Integer userId, Integer friendId);

    List<FriendVO> getPendingRequestList(Integer userId);

    boolean rejectFriend(Integer userId, Integer friendId);

    List<FriendVO> getAllFriendsWithPending(Integer userId);

    /**
     * 分页查询所有好友（含待确认）
     */
    List<FriendVO> getAllFriendsWithPendingPage(Integer userId, int pageNum, int pageSize);

    /**
     * 查询所有好友（含待确认）总数
     */
    int getAllFriendsWithPendingTotal(Integer userId);
} 